查看原文
其他

数据呈现丨小白学数据可视化:一个ggplot2画图完整实例

数据Seminar 2021-06-03

The following article is from R语言 Author 王路情

本文介绍一个ggplot2画图完整实例,直观上认识ggplot是如何实现有序逐步地画图和修饰图。




加载ggplot2包和数据集


library(ggplot2)data(mpg)

左右滑动查看更多




确定画图数据集和展示的变量或者变量集

数据集用ggplot()函数的参数data指定;映射的变量集用aes()函数传递给ggplot()函数的参数mapping。
ggplot(data = mpg, mapping = aes(x = displ, y = hwy))
左右滑动查看更多

Q

图形为什么是空的?

 



确定所要展示的几何图形 

ggplot2包画图的原理采用分层的思想来作图和完善图。我们选用两个连续变量displ和hwy,想了解它们之间的关系,我们采用散点图。
ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + geom_point()

左右滑动查看更多

若是我们想展示displ和hwy的50%分位数的散点图,如何做呢?参考代码:
library(tidyverse)filter(mpg, hwy <= median(mpg$hwy)) %>% ggplot(mapping = aes(x = displ, y = hwy)) + geom_point()

左右滑动查看更多




对点进行修饰

从点的颜色,大小,透明度等角度做修饰。
ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + geom_point( color = 'cornflowerblue', size = 3, alpha = .5 )

左右滑动查看更多




添加拟合曲线

通过拟合曲线,解释点之间的关系,我们采用geom_smooth()函数,设置参数method的值为lm。
ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + geom_point( color = 'cornflowerblue', size = 3, alpha = .5 ) + geom_smooth(method = 'lm')

左右滑动查看更多




同一幅图中分组展示

在aes()函数里面根据颜色或者形状或者大小或者透明度等视觉特性,实现同一幅图的分组显示。
ggplot(data = mpg, mapping = aes(x = displ, y = hwy, color = drv)) + geom_point( size = 3, alpha = .5 ) + geom_smooth( method = 'lm', se = FALSE, size = 1.5 )

左右滑动查看更多


Q

如下这段代码运行后,会是什么结果?

ggplot(data = mpg, mapping = aes(x = displ, y = hwy, color = drv)) + geom_point( color = 'cornflowerblue', size = 3, alpha = .5 ) + geom_smooth( method = 'lm', se = FALSE, size = 1.5 )
左右滑动查看更多




设置scale

scale可以控制变量如何把视觉特性映射到图上。
mpg %>% select(displ, hwy, drv) %>% ggplot(mapping = aes(x = displ, y = hwy, color = drv)) + geom_point(size = 3, alpha = .5) + geom_smooth( method = 'lm', se = FALSE, size = 1.5) + scale_x_continuous(breaks = seq(1.6, 8, 2)) + scale_y_continuous(breaks = seq(12, 45, 5))

左右滑动查看更多




添加facet

facet 可以给特定变量的每个level画图。
mpg %>% select(displ, hwy, drv, model) %>% ggplot(mapping = aes(x = displ, y = hwy, color = drv)) + geom_point(size = 3, alpha = .5) + geom_smooth( method = 'lm', se = FALSE, size = 1.5) + scale_x_continuous(breaks = seq(1.6, 8, 2)) + scale_y_continuous(breaks = seq(12, 45, 5)) + facet_wrap(~model)


左右滑动查看更多





添加labels

使用labs()函数实现自定义标题,子标题,x轴, y轴和图例等。
mpg %>% select(displ, hwy, drv, model) %>% ggplot(mapping = aes(x = displ, y = hwy, color = drv)) + geom_point(size = 3, alpha = .5) + geom_smooth( method = 'lm', se = FALSE, size = 1.5) + scale_x_continuous(breaks = seq(1.6, 8, 2)) + scale_y_continuous(breaks = seq(12, 45, 5)) + facet_wrap(~model) + labs(title = "displ和hwy的关系图", caption = "source: http://shujuren.org/", x = '变量displ', y = '变量hwy', color = "Drv_type")

左右滑动查看更多




选择合适的主题

可以使用已有的主题,也可以使用定制化的主题。
mpg %>% select(displ, hwy, drv, model) %>% ggplot(mapping = aes(x = displ, y = hwy, color = drv)) + geom_point(size = 3, alpha = .5) + geom_smooth( method = 'lm', se = FALSE, size = 1.5) + scale_x_continuous(breaks = seq(1.6, 8, 2)) + scale_y_continuous(breaks = seq(12, 45, 5)) + facet_wrap(~model) + labs(title = "displ和hwy的关系图", caption = "source: http://shujuren.org/", x = '变量displ', y = '变量hwy', color = "Drv_type") + theme_minimal()

左右滑动查看更多




总结

本文以散点图为例,做了一个ggplot2完整画图实例。后续会从变量的个数和变量可视化的目的入手,介绍一些常用的可视化图形。
您有什么见解,请留言。






►一周热文

统计计量丨工具变量法(一): 2SLS

数据呈现丨R绘图:七种基础可视化图,您选对了吗?

软件应用丨经济学专业学习R,您需掌握的R语言包汇总

特别推荐丨老姚专栏:经验观察误导之伯克森悖论

数据呈现丨R绘图:物以类聚,图以群分——聚类分析及可视化

工具&方法丨划重点 !经济学专业学Python需要学哪些内容?——数据分析处理必知必会的知识点

工具&方法丨古老而神秘的因子分析(一)








数据Seminar

这里是大数据、分析技术与学术研究的三叉路口


作者:王路情出处:R语言推荐:简华(何年华)编辑:青酱







    欢迎扫描👇二维码添加关注    


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存